On s’attache ici a reproduire la cartographie du paysage politique suisse realisee par Hermann et Lautheld (2003), dans leur Atlas der politischen Landschaften : Ein weltanschauliches Portrat der Schweiz.
A partir de 184 votations tenues entre 1982 et 2002, les auteurs montrent des graphiquement des differences persistantes de mentalite dans les cantons et les communes de Suisse, ce qu’ils nomment “l’espace des visions du monde”. En effet, davantage que des conflits politiques, ces votations permettent de saisir les lignes de fracture dans une societe : pour une societe liberale ou conservatrice, pour une protection des travailleurs ou des entreprises, pour une societe ecologique ou technocratique.
Aussi, sont dans un premier temps analysees ces votations afin d’en degager ces lignes de fracture. Les auteurs ont recours pour cela a une analyse factorielle, avec l’idee que si l’on trouve un certain nombre de votations avec une repartition similaire des votes favorables, ils representent une ligne de conflit politique ou un facteur. Tout autre groupe de votes qui ont un degre eleve d’accord entre eux, mais qui sont incompatibles avec les facteurs deja trouves, donne un facteur supplementaire. On arrive ainsi par cette analyse factorielle a identifier les lignes de fracture societales.
Ensuite, avec une methode a base d’estimation de densite par les noyaux explicitee par la suite, on peut realiser une cartographie factorielle de ces resultats.
Les paquets R suivants vont nous etre utiles :
require(FactoMineR)
require(factoextra)
require(stringi)
require(psych)
require(REdaS)
require(knitr)
require(reshape2)
require(spatialEco)
require(sp)
require(raster)
require(RColorBrewer)
require(tidyverse)
On commence par recuperer les donnees des votations qui peuvent etre extraites depuis : https://www.bfs.admin.ch/bfs/fr/home/statistiques/politique/votations.assetdetail.3362356.html
Apres mise en forme correcte, on charge les donnees :
data <- read.csv("votations.csv", header = TRUE, sep = ";", encoding = "latin1")
On fait un peu de mise en forme afin de pouvoir s’y retrouver plus facilement :
rownames(data) <- make.names(data$Commune, unique=TRUE)
colnames(data) <- stri_sub(colnames(data),2) # enleve les X des noms de colonne
data <- data[, -1]
data <- data[,order(as.Date(substr(colnames(data),1, 10),
format="%d.%m.%Y"))] # trie les colonnes par date
Notre tableau de donnees ressemble a cela :
head(data[,1:5])
## 14.06.1981.Egalité.entre.hommes.et.femmes
## X.Saxeten 54.5
## X.Alpthal 18.4
## X.Le.Bémont..JU. 79.3
## X.Oberdorf..BL. 54.5
## X.Mellikon 69.4
## X.Liesberg 49.0
## 14.06.1981.Protection.des.consommateurs
## X.Saxeten 45.5
## X.Alpthal 20.8
## X.Le.Bémont..JU. 81.0
## X.Oberdorf..BL. 61.5
## X.Mellikon 70.3
## X.Liesberg 61.0
## 29.11.1981.Régime.financier 06.06.1982.Code.pénal.suisse
## X.Saxeten 60.0 66.7
## X.Alpthal 53.8 55.6
## X.Le.Bémont..JU. 40.7 55.9
## X.Oberdorf..BL. 58.2 45.7
## X.Mellikon 58.7 47.7
## X.Liesberg 50.4 58.8
## 06.06.1982.Loi.sur.les.étrangers
## X.Saxeten 31.3
## X.Alpthal 40.7
## X.Le.Bémont..JU. 55.9
## X.Oberdorf..BL. 26.6
## X.Mellikon 26.7
## X.Liesberg 44.3
Alors maintenant on effectue une partition de maniere a ne garder que les votations effectivement considerees par Hermann et Leuthold (2003), comme les colonnes sont maintenant triees par date, c’est tres simple :
data_old <- data[,4:187]
Pour commencer, explorons un peu nos donnees : dans un premier temps, les votes sont compares par paires.
Prenons par exemple le vote sur l’adhesion de l’ONU (2002) et le vote sur la facilitation de la naturalisation des jeunes etrangers (1994) :
plot(data$`03.03.2002.Adhésion.de.la.Suisse.à.l.ONU`,
data$`12.06.1994.Naturalisation.facilitée.pour.les.jeunes.étrangers`,
xlab = "Adhesion a l'ONU (2002)",
ylab = "Naturalisation facilitee pour les jeunes etrangers (1994)",
xlim=c(0,100), ylim=c(0,100))
On voit qu’il existe un lien positif entre le oui pour l’adhesion a l’ONU et pour “faciliter la naturalisation des jeunes etrangers”. En regle generale, cela veut dire que plus une commune est favorable a la “facilitation de la naturalisation”, plus elle est favorable a une adhesion a l’ONU.
Prenons un autre exemple, l’approbation de la facilitation de la naturalisation des jeunes etrangers (1994) et l’approbation du projet contre l’immigration clandestine (1996) :
plot(data$`01.12.1996.Contre.l.immigration.clandestine`,
data$`12.06.1994.Naturalisation.facilitée.pour.les.jeunes.étrangers`,
xlab = "Contre l'immigration clandestine (1996)",
ylab = "Naturalisation facilitee pour les jeunes etrangers (1994)",
xlim=c(0,100), ylim=c(0,100))
Ici, en revanche, la figure montre une correlation negative : plus l’approbation de “la naturalisation facilitee” est elevee, plus l’approbation de la “limitation de la proportion d’etrangers” est faible.
Voyons un dernier cas de figure avec la comparaison de l’interdiction de l’experimentation animale (1992) et la facilitation de la naturalisation des jeunes etrangers (1994) :
plot(data$`16.02.1992.Initiative.contre.l.expérimentation.animale`,
data$`12.06.1994.Naturalisation.facilitée.pour.les.jeunes.étrangers`,
xlab = "Initiative contre l'experimentation animale (1992)",
ylab = "Naturalisation facilitee pour les jeunes etrangers (1994)",
xlim=c(0,100), ylim=c(0,100))
La figure montre qu’au niveau des communes, il n’y a pas de lien particulier entre l’approbation de l’interdiction de l’experimentation animale et l’approbation de la facilitation de la naturalisation.
Plus generalement, on compare les 184 votations deux a deux a l’aide d’une matrice de correlation :
c <-cor(data_old)
head(c[,1:5])
## 06.06.1982.Code.pénal.suisse
## 06.06.1982.Code.pénal.suisse 1.00000000
## 06.06.1982.Loi.sur.les.étrangers 0.20664185
## 28.11.1982.Surveillance.des.prix..contre.projet. 0.30427676
## 28.11.1982.Surveillance.des.prix..initiative. -0.33097805
## 27.02.1983.Article.sur.l.énergie 0.16478319
## 27.02.1983.Droits.de.douane.sur.les.carburants 0.07317908
## 06.06.1982.Loi.sur.les.étrangers
## 06.06.1982.Code.pénal.suisse 0.20664185
## 06.06.1982.Loi.sur.les.étrangers 1.00000000
## 28.11.1982.Surveillance.des.prix..contre.projet. 0.06871332
## 28.11.1982.Surveillance.des.prix..initiative. 0.01776461
## 27.02.1983.Article.sur.l.énergie 0.34229314
## 27.02.1983.Droits.de.douane.sur.les.carburants 0.27545081
## 28.11.1982.Surveillance.des.prix..contre.projet.
## 06.06.1982.Code.pénal.suisse 0.30427676
## 06.06.1982.Loi.sur.les.étrangers 0.06871332
## 28.11.1982.Surveillance.des.prix..contre.projet. 1.00000000
## 28.11.1982.Surveillance.des.prix..initiative. -0.48935179
## 27.02.1983.Article.sur.l.énergie 0.01670866
## 27.02.1983.Droits.de.douane.sur.les.carburants 0.01346510
## 28.11.1982.Surveillance.des.prix..initiative.
## 06.06.1982.Code.pénal.suisse -0.33097805
## 06.06.1982.Loi.sur.les.étrangers 0.01776461
## 28.11.1982.Surveillance.des.prix..contre.projet. -0.48935179
## 28.11.1982.Surveillance.des.prix..initiative. 1.00000000
## 27.02.1983.Article.sur.l.énergie 0.20548598
## 27.02.1983.Droits.de.douane.sur.les.carburants 0.02888380
## 27.02.1983.Article.sur.l.énergie
## 06.06.1982.Code.pénal.suisse 0.16478319
## 06.06.1982.Loi.sur.les.étrangers 0.34229314
## 28.11.1982.Surveillance.des.prix..contre.projet. 0.01670866
## 28.11.1982.Surveillance.des.prix..initiative. 0.20548598
## 27.02.1983.Article.sur.l.énergie 1.00000000
## 27.02.1983.Droits.de.douane.sur.les.carburants 0.56160256
On regarde ensuite l’indice de KMO, que l’on souhaite le plus proche de 1 pour une bonne ACP.
kmo <- KMO(data_old)
kmo$MSA
## [1] 0.9752057
Farpait.
On fait ensuite le test de sphericite de Bartlett pour verifier que les variables ne sont pas issues d’une population dont la matrice est l’identite, ce qui traduirait une absence totale de correlation ente les variables, et dans ce cas une analyse des composantes principales n’aurait donc pas d’interet.
bart_spher(data_old)
## Bartlett's Test of Sphericity
##
## Call: bart_spher(x = data_old)
##
## X2 = 576556.352
## df = 16836
## p-value < 2.22e-16
Avec un p-value telle que celle-ci, on peut rejeter l’hypothese (nulle) selon laquelle notre matrice des correlations est determinee a partir d’une population dont la matrice est identite. Ainsi, une ACP semble etre pertinente.
ATTENTION !!! A ce stade, nous avons suivi une analyse scientifique classique où nous passions “naïvement” par differentes etapes. Dans l’etape suivante, la calibration de l’ACP a ete realisee de maniere a obtenir les resultats les plus proches de ceux recoltes par Hermann et Leuthold (2003) dans l’idee de pouvoir realiser une cartographie qui soit similaire par la suite. Les resultats ne sont donc pas les meilleurs ni les plus adaptes, ce sont ceux qui nous permettent de poursuivre plus facilement notre interpretation de la methode employee par les auteurs originaux. La plupart des commentaires “politiques” sont des reprises des originaux
On utilise le package “psych” avec une rotation varimax.
acp <- principal(data_old, nfactors = 3, rotate = "varimax")
summary(acp)
##
## Factor analysis with Call: principal(r = data_old, nfactors = 3, rotate = "varimax")
##
## Test of the hypothesis that 3 factors are sufficient.
## The degrees of freedom for the model is 16287 and the objective function was 131.79
## The number of observations was 2224 with Chi Square = 284508 with prob < 0
##
## The root mean square of the residuals (RMSA) is 0.07
p <- print(acp)
round(p$Vaccounted,2)
## RC2 RC1 RC3
## SS loadings 35.62 31.20 30.25
## Proportion Var 0.19 0.17 0.16
## Cumulative Var 0.19 0.36 0.53
## Proportion Explained 0.37 0.32 0.31
## Cumulative Proportion 0.37 0.69 1.00
plot(100*acp$values/sum(acp$values),
xlim = c(1,8), ylim = c(0,30),
xlab = "Composante", ylab = "% de variance expliquee",
type = "b", las=1)
Avec les trois premieres composantes, on est seulement a 52,69% de variance expliquee. Il s’agit pourtant de l’ACP pour laquelle les resultats coïncident le mieux avec ceux du livre.
On doit a present regarder les differentes composantes obtenues :
kable(acp$loadings[,c(3,1,2)], digits=4)
| RC3 | RC2 | RC1 | |
|---|---|---|---|
| 06.06.1982.Code.pénal.suisse | -0.4566 | -0.0090 | 0.2005 |
| 06.06.1982.Loi.sur.les.étrangers | 0.0983 | -0.2099 | 0.6556 |
| 28.11.1982.Surveillance.des.prix..contre.projet. | -0.5297 | 0.0903 | 0.0602 |
| 28.11.1982.Surveillance.des.prix..initiative. | 0.6931 | 0.3170 | -0.0006 |
| 27.02.1983.Article.sur.l.énergie | 0.2520 | 0.1377 | 0.5048 |
| 27.02.1983.Droits.de.douane.sur.les.carburants | 0.2330 | -0.2549 | 0.2245 |
| 04.12.1983.Droit.de.la.nationalité | -0.0127 | 0.1792 | 0.6979 |
| 04.12.1983.Naturalisation.facilitée | 0.0690 | 0.0942 | 0.5329 |
| 26.02.1984.Initiative.pour.le.service.civil | 0.6619 | 0.2607 | 0.3827 |
| 26.02.1984.Redevance.sur.les.poids.lourds | 0.0717 | 0.7706 | 0.0505 |
| 26.02.1984.Vignette.autoroutière | -0.1619 | 0.7417 | -0.2089 |
| 20.05.1984.Contre.le.bradage.du.sol.national | -0.2791 | 0.6849 | -0.1721 |
| 20.05.1984.Initiative.sur.les.banques | 0.0418 | 0.6297 | -0.0512 |
| 23.09.1984.Approvisionnement.en.énergie.respectueux.de.l.environnement | 0.5918 | 0.1266 | 0.0757 |
| 23.09.1984.Initiative.contre.l.énergie.nucléaire | 0.5802 | 0.0989 | 0.0084 |
| 02.12.1984.Aide.aux.victimes.de.la.violence | -0.1581 | 0.7044 | 0.2737 |
| 02.12.1984.Article.sur.la.radio.et.télévision | 0.0977 | 0.3821 | 0.5990 |
| 02.12.1984.Protection.de.la.maternité | 0.7311 | 0.0016 | 0.2920 |
| 10.03.1985.Extension.de.la.durée.des.vacances | 0.8091 | 0.1205 | 0.0974 |
| 10.03.1985.Subsides.de.formation | -0.5848 | 0.1014 | 0.4075 |
| 10.03.1985.Subventionnement.de.la.santé.publique | -0.5066 | 0.2274 | 0.5452 |
| 10.03.1985.Subventionnement.de.l.instruction.primaire | -0.4843 | 0.3333 | 0.5300 |
| 09.06.1985.Imposition.des.boissons.distillées | -0.1886 | 0.4615 | 0.4710 |
| 09.06.1985.Part.cantonal.aux.droits.de.timbre | -0.2798 | 0.5064 | 0.4404 |
| 09.06.1985.Pour.le.droit.à.la.vie | 0.0849 | -0.1696 | -0.5445 |
| 09.06.1985.Suppression.de.l.aide.aux.producteurs.cultivant.le.blé | 0.3420 | -0.1369 | 0.6143 |
| 22.09.1985.Garantie.contre.les.risques.à.l.innovation | 0.7371 | -0.0416 | 0.3187 |
| 22.09.1985.Harmonisation.du.début.de.l.année.scolaire | 0.5224 | -0.3251 | 0.3131 |
| 22.09.1985.Nouveau.droit.matrimonial | 0.6643 | 0.0485 | 0.5389 |
| 01.12.1985.Suppression.de.la.vivisection | -0.0430 | 0.7161 | -0.0154 |
| 16.03.1986.Adhésion.de.la.Suisse.à.l.ONU | 0.5258 | 0.2487 | 0.5475 |
| 28.09.1986.Arrêté.sur.l.économie.sucrière | -0.2289 | -0.6171 | 0.0245 |
| 28.09.1986.En.faveur.de.la.culture..contre.projet. | 0.0800 | 0.2901 | 0.1422 |
| 28.09.1986.En.faveur.de.la.culture..initiative. | 0.6783 | 0.0164 | 0.2444 |
| 28.09.1986.Formation.professionnelle.et.recyclage | 0.6374 | 0.1144 | 0.0302 |
| 07.12.1986.Imposition.du.trafic.des.poids.lourds | 0.2595 | 0.7342 | 0.1852 |
| 07.12.1986.Protection.des.locataires | 0.5070 | 0.3755 | 0.2470 |
| 05.04.1987.Initiatives.avec.contre.projet | 0.5178 | 0.3648 | 0.4599 |
| 05.04.1987.Loi.sur.l.asile | -0.3895 | 0.0158 | -0.0089 |
| 05.04.1987.Loi.sur.les.étrangers | -0.2570 | 0.0530 | 0.1966 |
| 05.04.1987.Référendum.en.matière.de.dépenses.militaires | 0.7183 | 0.2402 | -0.0074 |
| 06.12.1987.Initiative.pour.la.protection.des.marais | 0.4526 | 0.4188 | 0.0468 |
| 06.12.1987.Loi.sur.l.assurance.maladie | 0.5402 | 0.3796 | 0.1417 |
| 06.12.1987.Projet.RAIL.2000 | 0.3725 | 0.2157 | 0.3344 |
| 12.06.1988.Abaissement.de.l.âge.de.la.retraite | 0.8330 | 0.1076 | 0.0538 |
| 12.06.1988.Politique.coordonnée.des.transports | 0.0754 | 0.8007 | 0.0423 |
| 04.12.1988.Contre.la.spéculation.foncière | 0.4853 | 0.4211 | 0.1024 |
| 04.12.1988.Limitation.de.l.immigration | 0.1869 | 0.3455 | -0.3543 |
| 04.12.1988.Réduction.de.la.durée.du.travail | 0.8063 | 0.2101 | 0.1304 |
| 04.06.1989.Initiative.en.faveur.des.petits.paysans | 0.2207 | 0.7718 | -0.0704 |
| 26.11.1989.Initiative..pro.vitesse.130.100. | 0.3760 | -0.7469 | 0.2079 |
| 26.11.1989.Suisse.sans.armée | 0.6935 | 0.1413 | 0.2429 |
| 01.04.1990.Arrêté.sur.la.viticulture | 0.0004 | -0.6399 | 0.2291 |
| 01.04.1990.District.du.Knonau.sans.autoroutes | -0.0900 | 0.7715 | -0.2421 |
| 01.04.1990.Initiative.contre.une.autoroute.entre.Bienne.et.Soleure | -0.1951 | 0.7952 | -0.2605 |
| 01.04.1990.Initiative.contre.une.autoroute.entre.Morat.et.Yverdon | -0.1409 | 0.8132 | -0.2415 |
| 01.04.1990.Loi.sur.l.organisation.judiciaire | -0.3407 | -0.2516 | 0.4594 |
| 01.04.1990.Stabilisation.du.réseau.routier | 0.0254 | 0.7812 | -0.2091 |
| 23.09.1990.Abandon.de.l.énergie.atomique | 0.6881 | 0.1760 | 0.0721 |
| 23.09.1990.Article.sur.l.énergie | 0.3981 | 0.4228 | 0.2562 |
| 23.09.1990.Loi.sur.la.circulation.routière | -0.0112 | -0.7262 | 0.4156 |
| 23.09.1990.Moratoire.nucléaire | 0.5704 | 0.3231 | 0.0272 |
| 03.03.1991.Droit.de.vote.à.18.ans | 0.2538 | -0.0236 | 0.4452 |
| 03.03.1991.Encouragement.des.transports.publics | 0.1887 | 0.7311 | 0.0963 |
| 02.06.1991.Code.pénal.militaire | -0.3554 | 0.4187 | 0.1321 |
| 02.06.1991.Introduction.de.la.TVA | -0.1136 | 0.6485 | 0.1933 |
| 16.02.1992.Initiative.contre.l.expérimentation.animale | -0.1227 | 0.7694 | -0.0398 |
| 16.02.1992.Initiative.des.caisses.maladie | 0.2619 | 0.4845 | -0.3964 |
| 17.05.1992.Adhésion.aux.institutions.de.Bretton.Woods | 0.2563 | -0.1901 | 0.8099 |
| 17.05.1992.Initiative..pour.la.sauvegarde.de.nos.eaux. | 0.2406 | 0.7183 | 0.1709 |
| 17.05.1992.Loi.sur.la.protection.des.eaux | 0.0056 | 0.6755 | 0.3235 |
| 17.05.1992.Participation.aux.institutions.de.Bretton.Woods | 0.2386 | -0.1676 | 0.8113 |
| 17.05.1992.Révision.du.droit.pénal.en.matière.sexuelle | 0.2044 | 0.5397 | 0.5048 |
| 17.05.1992.Service.civil.pour.les.objecteurs.de.conscience | 0.1002 | 0.7086 | 0.2351 |
| 17.05.1992.Techniques.de.reproduction.et.manipulation.génétique | 0.0055 | 0.6091 | 0.4089 |
| 27.09.1992.Arrêté.sur.le.transit.alpin | 0.3122 | -0.2157 | 0.5706 |
| 27.09.1992.Loi.sur.le.droit.foncier.rural | 0.0110 | 0.6241 | -0.0790 |
| 27.09.1992.Loi.sur.les.coûts.d.infrastructure | 0.3046 | 0.3011 | 0.6127 |
| 27.09.1992.Loi.sur.les.droits.de.timbre | -0.0117 | -0.1231 | 0.6738 |
| 27.09.1992.Loi.sur.les.indemnités.parlementaires | 0.3585 | 0.1859 | 0.6560 |
| 27.09.1992.Loi.sur.les.rapports.entre.les.conseils | 0.3406 | 0.0967 | 0.7889 |
| 06.12.1992.Adhésion.à.l.EEE | 0.3740 | -0.4665 | 0.7188 |
| 07.03.1993.Abolition.de.la.vivisection | 0.1680 | 0.6829 | -0.1049 |
| 07.03.1993.Autorisation.des.maisons.de.jeu | 0.0445 | -0.0374 | 0.3535 |
| 07.03.1993.Droits.d.entrée.sur.les.carburants | -0.4473 | 0.6980 | 0.0250 |
| 06.06.1993.40.places.d.armes.ça.suffit | 0.8016 | 0.0058 | 0.2762 |
| 06.06.1993.Initiative.contre.de.nouveaux.avions.de.combat | 0.7910 | 0.0418 | 0.2495 |
| 26.09.1993.Abus.de.l.usage.d.armes | 0.2107 | 0.1364 | 0.6004 |
| 26.09.1993.Initiative.1er.août | 0.2422 | 0.4203 | 0.1011 |
| 26.09.1993.Mesures..concernant.l.assurance.maladie | -0.2920 | 0.1393 | 0.4522 |
| 26.09.1993.Mesures.en.matière.d.assurance.chômage | -0.2761 | 0.0170 | 0.4731 |
| 26.09.1993.Rattachement.du.district.de.Laufon.à.Bâle.Campagne | 0.3320 | -0.3421 | 0.4952 |
| 28.11.1993.Impôts.de.consommation.spéciaux | -0.2403 | 0.4189 | 0.6602 |
| 28.11.1993.Introduction.de.la.TVA | -0.2990 | 0.3495 | 0.6467 |
| 28.11.1993.Pourcentage.de.la.TVA.pour.l.AVS | -0.2156 | 0.5332 | 0.4641 |
| 28.11.1993.Prévention.des.problèmes.liés.à.l.alcool | 0.0766 | 0.6901 | -0.0078 |
| 28.11.1993.Prévention.des.problèmes.liés.au.tabac | 0.0893 | 0.6941 | 0.0253 |
| 28.11.1993.TVA..taux.de.6.5.. | -0.2861 | 0.5031 | 0.4756 |
| 20.02.1994.Initiative.pour.la.protection.des.Alpes | 0.0157 | 0.7906 | -0.2140 |
| 20.02.1994.Loi.sur.la.navigation.aérienne | 0.0797 | -0.2159 | 0.5766 |
| 20.02.1994.Prorogation.de.la.redevance.sur.les.poids.lourds | -0.1149 | 0.8853 | 0.0310 |
| 20.02.1994.Prorogation.de.la.vignette.autoroutière | -0.2445 | 0.8438 | 0.0165 |
| 20.02.1994.Taxe.poids.lourds.liée.aux.prestations | -0.0046 | 0.8745 | 0.0675 |
| 12.06.1994.Article.sur.l.encouragement.de.la.culture | 0.5651 | 0.0529 | 0.6230 |
| 12.06.1994.Casques.bleus | 0.2316 | -0.0973 | 0.8269 |
| 12.06.1994.Naturalisation.facilitée.pour.les.jeunes.étrangers | 0.1944 | -0.1259 | 0.8589 |
| 25.09.1994.Loi.contre.le.racisme | 0.1928 | 0.2504 | 0.7342 |
| 25.09.1994.Suppression.de.la.réduction.du.prix.du.blé.indigène | -0.1479 | 0.4338 | 0.6755 |
| 04.12.1994.Initiative..pour.une.saine.assurance.maladie. | 0.7742 | -0.1028 | 0.1199 |
| 04.12.1994.Loi.sur.l.assurance.maladie | 0.6644 | -0.2487 | 0.4138 |
| 04.12.1994.Mesures.de.contrainte.concernant.les.étrangers | -0.5146 | 0.4769 | -0.1250 |
| 12.03.1995.Article.sur.l.agriculture | -0.1108 | -0.7086 | 0.2667 |
| 12.03.1995.Economie.laitière | -0.0566 | -0.7067 | 0.2416 |
| 12.03.1995.Frein.aux.dépenses | -0.3154 | -0.0265 | 0.5211 |
| 12.03.1995.Loi.sur.l.agriculture | -0.0094 | -0.6983 | 0.2582 |
| 25.06.1995.10e.révision.de.l.AVS | -0.7244 | 0.2057 | 0.3182 |
| 25.06.1995.Acquisition.d.immeubles.par.des.étrangers | 0.2922 | -0.4101 | 0.6789 |
| 25.06.1995.Extension.de.l.AVS.et.de.l.AI | 0.7919 | 0.1232 | 0.0387 |
| 10.03.1996.Article.sur.les.langues | 0.3816 | -0.0731 | 0.5169 |
| 10.03.1996.Equipement.personnel.des.militaires | -0.1327 | 0.4657 | 0.4605 |
| 10.03.1996.Places.de.stationnement.près.des.gares | -0.2241 | 0.5134 | 0.2020 |
| 10.03.1996.Rachat.d.eau.de.vie.et.d.appareils.à.distiller | -0.0392 | 0.2940 | 0.7151 |
| 10.03.1996.Transfert.de.la.commune.de.Vellerat.au.canton.du.Jura | 0.0747 | 0.0762 | 0.4878 |
| 09.06.1996.Article.sur.l.agriculture | 0.1120 | 0.6928 | 0.2047 |
| 09.06.1996.Organisation.du.gouvernement.et.de.l.administration | 0.4380 | -0.1688 | 0.7164 |
| 01.12.1996.Contre.l.immigration.clandestine | -0.3083 | 0.3220 | -0.6692 |
| 01.12.1996.Loi.sur.le.travail | -0.5563 | 0.3017 | 0.3270 |
| 08.06.1997.Initiative.contre.l.exportation.de.matériel.de.guerre | 0.6394 | 0.0651 | 0.3185 |
| 08.06.1997.Négociations.d.adhésion.à.l.UE..que.le.peuple.décide | 0.0529 | 0.1825 | -0.5913 |
| 08.06.1997.Suppression.de.la.régale.des.poudres | -0.1686 | 0.4459 | 0.5031 |
| 28.09.1997.Financement.de.l.assurance.chômage | -0.7139 | 0.4044 | -0.1030 |
| 28.09.1997.Initiative..Jeunesse.sans.drogue. | -0.0906 | -0.4080 | -0.3414 |
| 07.06.1998.Initiative.contre.une.police.fouineuse | 0.5560 | 0.2903 | -0.0721 |
| 07.06.1998.Initiative.pour.la.protection.génétique | -0.1684 | 0.6871 | -0.4175 |
| 07.06.1998.Objectif.budgétaire.2001 | -0.6617 | 0.3718 | 0.2207 |
| 27.09.1998.Initiative.contre.le.relèvement.de.l.âge.de.la.retraite | 0.8571 | -0.1504 | 0.1116 |
| 27.09.1998.Initiative.des.petits.paysans | 0.2762 | 0.7274 | -0.1256 |
| 27.09.1998.Redevance.sur.les.poids.lourds.liée.aux.prestations | 0.3055 | 0.6115 | 0.3962 |
| 29.11.1998.Article.céréalier | 0.1695 | 0.3835 | 0.6214 |
| 29.11.1998.Financement.de.l.infrastructure.des.transports.publics | 0.4214 | 0.3231 | 0.3718 |
| 29.11.1998.Initiative.Droleg | -0.0798 | 0.6533 | -0.1047 |
| 29.11.1998.Loi.sur.le.travail | -0.4000 | 0.5503 | 0.3212 |
| 07.02.1999.Eligibilité.au.Conseil.fédéral | -0.3842 | 0.4537 | 0.4443 |
| 07.02.1999.Initiative..propriété.du.logement.pour.tous. | -0.2915 | -0.0513 | -0.0324 |
| 07.02.1999.Loi.sur.l.aménagement.du.territoire | 0.0959 | -0.5054 | 0.3178 |
| 07.02.1999.Médecine.de.la.transplantation | 0.0986 | -0.0403 | 0.6313 |
| 18.04.1999.Nouvelle.Constitution.fédérale | 0.4644 | -0.1622 | 0.7232 |
| 13.06.1999.Loi.sur.l.asile | -0.4849 | 0.5702 | 0.1284 |
| 13.06.1999.Loi.sur.l.assurance.invalidité | -0.0608 | -0.1436 | 0.3954 |
| 13.06.1999.Loi.sur.l.assurance.maternité | 0.6436 | -0.4008 | 0.5403 |
| 13.06.1999.Mesures.dans.le.domaine.de.l.asile.et.des.étrangers | -0.5146 | 0.5909 | 0.0429 |
| 13.06.1999.Prescription.d.héroïne | -0.0243 | 0.6834 | 0.3724 |
| 12.03.2000.Initiative.des.quotas | 0.5768 | -0.0285 | 0.4014 |
| 12.03.2000.Initiative.pour.la.réduction.du.trafic | 0.1739 | 0.7397 | 0.1815 |
| 12.03.2000.Initiative.pour.une.démocratie.directe.plus.rapide | 0.0782 | 0.2315 | -0.1641 |
| 12.03.2000.Procréation.respectant.la.dignité.humaine | -0.0616 | 0.6266 | -0.4713 |
| 12.03.2000.Réforme.de.la.justice | 0.0316 | 0.3224 | 0.6996 |
| 21.05.2000.Accords.bilatéraux.avec.l.UE | 0.1485 | -0.2411 | 0.7753 |
| 24.09.2000.Initiative.solaire | 0.2542 | 0.5166 | 0.1830 |
| 24.09.2000.Redevance.incitative.en.faveur.de.l.environnement | 0.0273 | 0.6842 | 0.2208 |
| 24.09.2000.Redevance.pour.l.encouragement.des.énergies.renouvelables | 0.1577 | 0.4062 | 0.3802 |
| 24.09.2000.Référendum.constructif | 0.5682 | 0.2222 | -0.1747 |
| 24.09.2000.Réglement.de.l.immigration | -0.2491 | 0.3471 | -0.6782 |
| 26.11.2000.Assouplissement.de.l.AVS | 0.8046 | -0.2888 | 0.2432 |
| 26.11.2000.Initiative..pour.des.coûts.hospitaliers.moins.élevés. | 0.4480 | -0.0107 | -0.3106 |
| 26.11.2000.Loi.sur.le.personnel.de.la.Confédération | -0.6939 | 0.3998 | 0.1993 |
| 26.11.2000.Redistribution.des.dépenses.militaires | 0.7496 | -0.2433 | 0.4336 |
| 26.11.2000.Retraite.à.la.carte.dès.62.ans | 0.7985 | -0.3305 | 0.1850 |
| 04.03.2001.Initiative..pour.des.médicaments.à.moindre.prix. | -0.0617 | 0.6913 | -0.1627 |
| 04.03.2001.Oui.à.l.Europe. | 0.4548 | -0.3312 | 0.6715 |
| 04.03.2001.Rues.pour.tous | 0.1597 | 0.5775 | 0.3167 |
| 10.06.2001.Loi.sur.l.armée..armement | -0.1454 | 0.1971 | 0.6162 |
| 10.06.2001.Loi.sur.l.armée..coopération.en.matière.d.instruction | -0.1394 | 0.1346 | 0.6716 |
| 10.06.2001.Suppression.de.l.article.sur.les.évêchés | 0.1128 | 0.2524 | 0.1452 |
| 02.12.2001.Frein.à.l.endettement | -0.6180 | 0.1768 | 0.1698 |
| 02.12.2001.Impôt.sur.les.gains.en.capital | 0.4150 | 0.1194 | 0.0446 |
| 02.12.2001.Service.civil.volontaire.pour.la.paix | 0.7075 | -0.1247 | 0.4440 |
| 02.12.2001.Suisse.sans.armée | 0.6725 | -0.1099 | 0.4337 |
| 02.12.2001.Taxer.l.énergie.et.non.le.travail | 0.3893 | 0.4354 | 0.1675 |
| 03.03.2002.Adhésion.de.la.Suisse.à.l.ONU | 0.2264 | -0.0679 | 0.8118 |
| 03.03.2002.Durée.du.travail.réduite | 0.7799 | -0.1227 | 0.3529 |
| 02.06.2002.Pour.la.mère.et.l.enfant | -0.0268 | -0.0239 | -0.6235 |
| 02.06.2002.Régime.du.délai | 0.1078 | -0.0377 | 0.7017 |
| 22.09.2002.Initiative.sur.l.or | -0.1160 | 0.1211 | -0.5423 |
L’opposition “gauche-droite” correspond au a la troiseme composante (RC3) qui, selon l’analyse factorielle, est le mieux representee par les 20 votes du tableau ci-dessous. Les votes sont ranges en fonction de l’intensite avec laquelle ils determinent la ligne de fracture.
p <- print(ICLUST.sort(acp$loadings))
resultRC3 <-melt(data.frame(p$content[129:149],p$RC3[129:149]))
resultRC3 <- resultRC3[,-2]
colnames(resultRC3) <- c("Votation","loading")
kable(resultRC3)
| Votation | loading |
|---|---|
| 27.09.1998.Initiative.contre.le.relèvement.de.l.âge.de.la.retraite | 0.86 |
| 12.06.1988.Abaissement.de.l.âge.de.la.retraite | 0.83 |
| 10.03.1985.Extension.de.la.durée.des.vacances | 0.81 |
| 04.12.1988.Réduction.de.la.durée.du.travail | 0.81 |
| 26.11.2000.Assouplissement.de.l.AVS | 0.80 |
| 06.06.1993.40.places.d.armes.ça.suffit | 0.80 |
| 26.11.2000.Retraite.à.la.carte.dès.62.ans | 0.80 |
| 25.06.1995.Extension.de.l.AVS.et.de.l.AI | 0.79 |
| 06.06.1993.Initiative.contre.de.nouveaux.avions.de.combat | 0.79 |
| 03.03.2002.Durée.du.travail.réduite | 0.78 |
| 04.12.1994.Initiative..pour.une.saine.assurance.maladie. | 0.77 |
| 26.11.2000.Redistribution.des.dépenses.militaires | 0.75 |
| 22.09.1985.Garantie.contre.les.risques.à.l.innovation | 0.74 |
| 02.12.1984.Protection.de.la.maternité | 0.73 |
| 25.06.1995.10e.révision.de.l.AVS | -0.72 |
| 05.04.1987.Référendum.en.matière.de.dépenses.militaires | 0.72 |
| 28.09.1997.Financement.de.l.assurance.chômage | -0.71 |
| 02.12.2001.Service.civil.volontaire.pour.la.paix | 0.71 |
| 26.11.2000.Loi.sur.le.personnel.de.la.Confédération | -0.69 |
| 26.11.1989.Suisse.sans.armée | 0.69 |
| 28.11.1982.Surveillance.des.prix..initiative. | 0.69 |
Comme l’indique la liste, le premier conflit concerne principalement l’Etat-providence et la protection des travailleurs. D’un côte de la ligne de conflit, il y a une attitude qui cherche a ameliorer la situation des travailleurs et a elargir les services de l’Etat providence. De l’autre, il y a au contraire le souci de reduire les coûts de l’Etat-providence et de proteger les interets des employeurs.
Outre la politique sociale, un deuxieme groupe de themes est fortement represente dans le tableau. Il s’agit de propositions sur la politique de securite (par exemple, “Suisse sans armee” ou “40 places d’armes suffisent”). Lors des votations, ces sujets montrent un degre eleve d’accord avec les questions sociopolitiques. Il montre qu’une attitude “sociale” est generalement associee a une attitude “pacifiste”. D’autre part, les valeurs contraires coincident donc avec une attitude positive envers les autorites de securite, l’armee et la police.
Lorsque le debat sur l’Europe a commence en Suisse au debut des annees 1990, il est apparu que la societe ne pouvait pas seulement etre divisee entre la gauche et la droite. En ce qui concerne le vote sur l’Espace Economique Europeen de 1992, des coalitions se sont formees et ont rassemble des mouvements de gauche avec des mouvements de droite.
L’ACP confirme cette constatation : les propositions d’integration de la Suisse dans la communaute internationale (UE, ONU, Banque mondiale, etc.) ne se situent pas sur la ligne de conflit gauche-droite, mais forment un groupe independant. Le tableau ci-dessous montre les 25 votes qui decrivent le mieux cette deuxieme fracture (RC1).
resultRC1 <-melt(data.frame(p$content[71:95],p$RC1[71:95]))
resultRC1 <- resultRC1[,-2]
colnames(resultRC1) <- c("Votation","loading")
kable(resultRC1)
| Votation | loading |
|---|---|
| 12.06.1994.Naturalisation.facilitée.pour.les.jeunes.étrangers | 0.86 |
| 12.06.1994.Casques.bleus | 0.83 |
| 03.03.2002.Adhésion.de.la.Suisse.à.l.ONU | 0.81 |
| 17.05.1992.Participation.aux.institutions.de.Bretton.Woods | 0.81 |
| 17.05.1992.Adhésion.aux.institutions.de.Bretton.Woods | 0.81 |
| 27.09.1992.Loi.sur.les.rapports.entre.les.conseils | 0.79 |
| 21.05.2000.Accords.bilatéraux.avec.l.UE | 0.78 |
| 25.09.1994.Loi.contre.le.racisme | 0.73 |
| 18.04.1999.Nouvelle.Constitution.fédérale | 0.72 |
| 06.12.1992.Adhésion.à.l.EEE | 0.72 |
| 09.06.1996.Organisation.du.gouvernement.et.de.l.administration | 0.72 |
| 10.03.1996.Rachat.d.eau.de.vie.et.d.appareils.à.distiller | 0.72 |
| 02.06.2002.Régime.du.délai | 0.70 |
| 12.03.2000.Réforme.de.la.justice | 0.70 |
| 04.12.1983.Droit.de.la.nationalité | 0.70 |
| 25.06.1995.Acquisition.d.immeubles.par.des.étrangers | 0.68 |
| 24.09.2000.Réglement.de.l.immigration | -0.68 |
| 25.09.1994.Suppression.de.la.réduction.du.prix.du.blé.indigène | 0.68 |
| 27.09.1992.Loi.sur.les.droits.de.timbre | 0.67 |
| 10.06.2001.Loi.sur.l.armée..coopération.en.matière.d.instruction | 0.67 |
| 04.03.2001.Oui.à.l.Europe. | 0.67 |
| 01.12.1996.Contre.l.immigration.clandestine | -0.67 |
| 28.11.1993.Impôts.de.consommation.spéciaux | 0.66 |
| 27.09.1992.Loi.sur.les.indemnités.parlementaires | 0.66 |
| 06.06.1982.Loi.sur.les.étrangers | 0.66 |
La deuxieme ligne de conflit contient egalement les votations sur l’integration des etrangers, telles que la “naturalisation facilitee des jeunes etrangers” ou la “loi antiracisme”. Dans un certain sens, les propositions d’integration sont aussi des propositions d’ouverture, meme il ne s’agit que d’une ouverture a l’interieur. Le deuxieme conflit fondamental est donc un conflit entre cosmopolitisme et la fermeture des frontieres. Mais c’est aussi un conflit de modernisation et de preservation. Les propositions de modernisation ont un but. Simplifier les procedures, ameliorer les reglementations et les adapter aux exigences d’une societe en mutation. Les propositions de modernisation typiques sont la nouvelle Constitution federale, l’introduction de la TVA ou une reforme parlementaire.
La combinaison des deux groupes de questions sur la deuxieme ligne de clivage montre que quiconque prône l’ouverture du pays vise egalement la modernisation des institutions de l’Etat. D’autre part, ceux qui voient la necessite d’une plus grande fermeture des frontieres veulent surtout preserver la reglementation existante. Les auteurs se referent a l’attitude cosmopolitiste-moderne contre l’attitude de enfermement-preservation, ou plus simplement, liberale contre conservatrice.
Une une troisieme ligne de fracture distincte qui est communement associee a une opposition de gauche-droite est revelee : elle concerne la question de savoir comment evaluer l’interference humaine avec la nature. Dans ce contexte, le souci d’une approche prudente et holistique de la nature, oppose a sa maîtrise technique et son utilisation sont opposes. La liste des votes qui determinent ce troisieme conflit montre une large gamme thematique ; ce sont des votations sur le transport et la protection de l’environnement, mais aussi des votes sur l’agriculture, le bien-etre animal et le genie genetique.
resultRC2 <-melt(data.frame(p$content[1:20],p$RC2[1:20]))
resultRC2 <- resultRC2[,-2]
colnames(resultRC2) <- c("Votation","loading")
kable(resultRC2)
| Votation | loading |
|---|---|
| 20.02.1994.Prorogation.de.la.redevance.sur.les.poids.lourds | 0.89 |
| 20.02.1994.Taxe.poids.lourds.liée.aux.prestations | 0.87 |
| 20.02.1994.Prorogation.de.la.vignette.autoroutière | 0.84 |
| 01.04.1990.Initiative.contre.une.autoroute.entre.Morat.et.Yverdon | 0.81 |
| 12.06.1988.Politique.coordonnée.des.transports | 0.80 |
| 01.04.1990.Initiative.contre.une.autoroute.entre.Bienne.et.Soleure | 0.80 |
| 20.02.1994.Initiative.pour.la.protection.des.Alpes | 0.79 |
| 01.04.1990.Stabilisation.du.réseau.routier | 0.78 |
| 04.06.1989.Initiative.en.faveur.des.petits.paysans | 0.77 |
| 01.04.1990.District.du.Knonau.sans.autoroutes | 0.77 |
| 26.02.1984.Redevance.sur.les.poids.lourds | 0.77 |
| 16.02.1992.Initiative.contre.l.expérimentation.animale | 0.77 |
| 26.11.1989.Initiative..pro.vitesse.130.100. | -0.75 |
| 26.02.1984.Vignette.autoroutière | 0.74 |
| 12.03.2000.Initiative.pour.la.réduction.du.trafic | 0.74 |
| 07.12.1986.Imposition.du.trafic.des.poids.lourds | 0.73 |
| 03.03.1991.Encouragement.des.transports.publics | 0.73 |
| 27.09.1998.Initiative.des.petits.paysans | 0.73 |
| 23.09.1990.Loi.sur.la.circulation.routière | -0.73 |
| 17.05.1992.Initiative..pour.la.sauvegarde.de.nos.eaux. | 0.72 |
Les lignes de conflit politiques revelees par l’ACP donnent une idee precise des valeurs fondamentales divergentes en Suisse. Les conflits d’attitude fondamentaux qui existent dans la societe sont beaucoup plus divers que dans la politique institutionnelle, où les partis et leurs representants peuvent encore etre classes dans un large eventail de gauche a droite. Alors que le conflit entre une orientation libarale et une orientation conservatrice est devenu de plus en plus visible dans le paysage des partis au cours de la derniere decennie, le contraste entre l’ecologie et la technocratie en politique n’est guere considere comme une ligne de conflit independante. (NDE : ecrit en 2003, aujourd’hui, un peu plus)
L’espace tridimensionnel des visions du monde couvre les attitudes de base typiques de la Suisse. Bien que statistiquement parlant, les trois dimensions de l’espace pour les differences dans les resultats des votes soient a peu pres equivalentes, l’accent ne sera mis que sur les deux dimensions gauche-droite et liberal-conservateur.
Il y a d’abord des raisons pratiques a cela : une carte ne peut afficher qu’un seul plan etire entre deux dimensions. Cependant, il y a aussi une raison substantielle : le contraste entre ecologique et technocratique est avant tout un conflit entre la partie francaise et la partie allemande du pays et est moins significatif pour l’analyse intraregionale.
Maintenant que notre ACP a ete realisee et nos facteurs retenus, on attribue a chaque commune son score factoriel.
scores <- as.data.frame(acp$scores)
head(scores)
## RC2 RC1 RC3
## X.Saxeten 0.8539639 -1.9880436 0.3111002
## X.Alpthal -1.6226131 -3.6117403 -0.7833659
## X.Le.Bémont..JU. -1.1920217 -0.6486866 2.6048862
## X.Oberdorf..BL. 0.7357200 -0.5718280 0.1459617
## X.Mellikon 1.0859081 -0.6681187 0.8922702
## X.Liesberg 0.6650193 -1.1980120 0.9954138
De cette facon, on peut cartographier les communes suisses sur la base des votes qu’elles ont realisees dans notre espace a deux dimensions, RC1 pour l’axe y et -RC3 (on prend l’oppose de facon a avoir la gauche a gauche) pour l’axe x :
par(pty="s")
plot(-scores$RC3, scores$RC1, xlab = "", ylab = "", xaxt='n', yaxt="n", pch=10, cex=.3)
mtext('Droite', side=4, line=2, las=1)
mtext('Gauche', side=2, line=2, las=1)
mtext("Liberal", side =3, line=1)
mtext("Conservateur", side =1, line=1)
Maintenant que nous avons nos coordonnees spatiales, on veut attribuer un poids a ces entites afin de pouvoir realiser par la suite des estimations de surfaces de densite par noyaux.
On a recupere un fichier des communes suisses avec le nombre d’habitants, il s’agit maintenant de fusionner ces deux tableaux de donnees:
communes <- read.csv2("communes.csv", encoding = "latin1")
communes$Habitants <- as.numeric(gsub('![[:alnum:]]*[[:space:]]|[[:punct:]]', '', communes$Habitants))
communes$Commune <- gsub('-', ' ', communes$Commune)
Les operations precedentes ont pas mal abîme les noms des communes, on realise donc un certain nombre de modifications textuelles :
scores$Commune <- row.names(scores)
scores$Commune <- stri_sub(scores$Commune,3)
scores$Commune <- gsub('\\.\\.', ' (', scores$Commune)
scores$Commune <- gsub('H\\.', 'H)', scores$Commune)
scores$Commune <- gsub('G\\.', 'G)', scores$Commune)
scores$Commune <- gsub('Z\\.', 'Z)', scores$Commune)
scores$Commune <- gsub('E\\.', 'E)', scores$Commune)
scores$Commune <- gsub('L\\.', 'L)', scores$Commune)
scores$Commune <- gsub('U\\.', 'U)', scores$Commune)
scores$Commune <- gsub('R\\.', 'R)', scores$Commune)
scores$Commune <- gsub('O\\.', 'O)', scores$Commune)
scores$Commune <- gsub('W\\.', 'W)', scores$Commune)
scores$Commune <- gsub('D\\.', 'D)', scores$Commune)
scores$Commune <- gsub('S\\.', 'S)', scores$Commune)
scores$Commune <- gsub('\\.', ' ', scores$Commune)
scores$Commune <- gsub('\\(Urne commune', '', scores$Commune)
scores$Commune <- gsub('St \\(', 'St\\. ', scores$Commune)
scores$Commune <- gsub('Biel Bienne', 'Biel/Bienne', scores$Commune)
On peut alors fusionner les deux fichiers :
scores <- merge(scores, communes, by= "Commune")
Et on garde ce qui est necessaire :
scores <- scores[,1:6]
L’analyse politique suisse est evidemment geolinguistique : on doit donc retrouver ces langues dans nos donnees. Pour cela on se sert du code geographique qui est fonction des cantons et districts.
scores$langue <- ""
scores$langue[scores$Code.commune <1720] <- "ALL"
scores$langue[scores$Code.commune <5400 & scores$Code.commune > 5000] <- "ITA" # TI
scores$langue[scores$Code.commune >5400 & scores$Code.commune < 5940] <- "FRA" # VD
scores$langue[scores$Code.commune >6400] <- "FRA" # JU GE NE
scores$langue[scores$Code.commune >1000 & scores$Code.commune < 1720] <- "ALL"
scores$langue[scores$Code.commune >2400 & scores$Code.commune < 4960] <- "ALL"
scores$langue[scores$Code.commune >2000 & scores$Code.commune < 2340] <- "FRA"
scores$langue[scores$Code.commune >6000 & scores$Code.commune < 6012] <- "ALL"
scores$langue[scores$Code.commune >6020 & scores$Code.commune < 6040] <- "FRA"
scores$langue[scores$Code.commune >6040 & scores$Code.commune < 6080] <- "ALL"
scores$langue[scores$Code.commune >6080 & scores$Code.commune < 6100] <- "FRA"
scores$langue[scores$Code.commune >6100 & scores$Code.commune < 6120] <- "ALL"
scores$langue[scores$Code.commune >6120 & scores$Code.commune < 6160] <- "FRA"
scores$langue[scores$Code.commune >6160 & scores$Code.commune < 6210] <- "ALL"
scores$langue[scores$Code.commune >6210 & scores$Code.commune < 6270] <- "FRA"
scores$langue[scores$Code.commune >6270 & scores$Code.commune < 6301] <- "ALL"
jurabernoisFRA <- c(681,683,687,431,432,433,690,434,691,692,694,435,723,696,437,700,724,438,701,450,716,726,715,703,441,704,442,706,443,449,707,444,445,711,713,446,717,448)
MoesaBernina <- c(3804,3837,3831,3805,3832,3821,3822,3808,3834,3835,3823,3810,3551,3561,3531,3792)
scores$langue[scores$Code.commune %in% jurabernoisFRA] <- "FRA"
scores$langue[scores$Code.commune %in% MoesaBernina] <- "ITA"
On peut alors attribuer les couleurs :
scores$Colour[scores$langue == "FRA"]="#FF3D00"
scores$Colour[scores$langue == "ALL"]="#5DE100"
scores$Colour[scores$langue == "ITA"]="#FFBC00"
Et visualiser le resultat intermediaire :
par(pty="s")
plot(-scores$RC3, scores$RC1, xlab = "", ylab = "", xaxt='n', yaxt="n", cex=sqrt(scores$Habitants/10000),pch=16, col=scores$Colour)
mtext('Droite', side=4, line=2, las=1)
mtext('Gauche', side=2, line=2, las=1)
mtext("Liberal", side =3, line=1)
mtext("Conservateur", side =1, line=1)
legend("bottomleft",col = c("#FF3D00","#5DE100","#FFBC00"), legend = c("FRA","ALL","ITA"),pch=16)
Ce resultat est en soit deja satisfaisant par bien des aspects. On veut toutefois reproduire le style “carte topographique” de l’original et on passe alors sur ArcGIS par commodite.
On exporte donc nos donnees afin de pouvoir les importer dans le SIG.
scores$RC3 <- -scores$RC3 # inversion des coordonn?es pour adaptation graphique logique
write.csv(scores, "scores.csv")
scores2 <- scores[,3:4]
On passe d’abord les donn?es data.frame en spatiales :
coordinates(scores) <- ~ RC3 + RC1
On a ensuite besoin de calculer le rayon optimal de recherche. Pour obtenir ce search radius (bandwith), on peut reprendre la formule de Silverman (1986) :
\(h = \left ( \frac{4\sigma ^{5}}{3n} \right )^{1/5} \approx 1.06\sigma n^{-1/5}\)
ou \(\sigma\) est l’ecart-type des distances entre les points et \(n\) le nombre d’observation.
Pour obtenir cet ecart-type, on fait un petit calcul :
# centres moyens
mc <- apply(scores2, 2, mean)
# standard distance
sd <- sqrt(sum((scores2[,1] - mc[1])^2 + (scores2[,2] - mc[2])^2) / nrow(scores2))
h <- 1.06*sd*(2162^(-0.2))
Ensuite, on peut utiliser la fonction de calcul de kde du package spatialEco
kde <- sp.kde(scores, y= scores$Habitants, bw = h*2, newdata = c(-5,5,-5,5), n= 1000)
##
## calculating weighted kde
plot(kde)
crs(kde) <- "+proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0"
En réalité, ici 2*h est bien meilleur que h, du coup on va garder ça pour la visu.
Un peu d’ajustement graphique sur la couche obtenue, notamment l’ombrage (hillshade) qui donne un aspect carte topo.
slope <- terrain(kde, opt='slope')
aspect <- terrain(kde, opt='aspect')
hill <- hillShade(slope, aspect, 45, 315)
plot(hill, col=grey(0:100/100), legend=FALSE, main='Switzerland')
Afin de determiner les zones linguistiques, on cree des partitions de nos scores en fonction de la langue (ALL, FRA et ITA).
scoresFRA <- subset(scores, scores$langue == 'FRA')
scoresALL <- subset(scores, scores$langue == 'ALL')
scoresITA <- subset(scores, scores$langue == 'ITA')
On refait ensuite des KDE sur les points par langue de maniere a obtenir 3 nouveaux rasters.
kdeFRA <- sp.kde(scoresFRA, y= scoresFRA$Habitants, bw = h*2, newdata = c(-5,5,-5,5), n= 1000)
##
## calculating weighted kde
par(pty="s")
plot(kdeFRA, xlim=c(-5, 5), ylim=c(-5, 5), col = c("#F5A780","#F28E6e","#EF765D","#EC5e4b","#E9463A","#E62E28","#E41617"),legend=FALSE )
kdeALL <- sp.kde(scoresALL, y= scoresALL$Habitants, bw = h*2, newdata = c(-5,5,-5,5), n= 1000)
##
## calculating weighted kde
plot(kdeALL, xlim=c(-5, 5), ylim=c(-5, 5),col = c("#E8Ecb4","#C1DCA1","#9ACC8E","#74BC7C","#4DAC69","#269C56","#008c44"), legend=FALSE)
kdeITA <- sp.kde(scoresITA, y= scoresITA$Habitants, bw = h*2, newdata = c(-5,5,-5,5), n= 1000)
##
## calculating weighted kde
plot(kdeITA, xlim=c(-5, 5), ylim=c(-5, 5),col = c("#F4CD8E","#F7C074","#F2B058","#EC9C34"),legend=FALSE)
legend("bottomleft",col = c("#FF3D00","#5DE100","#FFBC00"), legend = c("FRA","ALL","ITA"),pch=16)
Pour une meilleure visualisation, on exporte ça pour QGIS :
values(kde)[values(kde) <0.01] <- NA
writeRaster(kde, "kde.tif", overwrite = TRUE)
writeRaster(kdeFRA, "kdeFRA.tif", overwrite = TRUE)
writeRaster(kdeALL, "kdeALL.tif", overwrite = TRUE)
writeRaster(kdeITA, "kdeITA.tif", overwrite = TRUE)
On visualise ça au mieux :
Zone francophone : Zone Germanophone
Zone italophone